1. Field of the Invention
The present invention relates generally to electronic computer systems, and more specifically to a system and method for communicating data between computer systems.
2. Description of the Prior Art
Use of networks of various types to connect computer systems together continues to increase. These networks are used to communicate data between the various systems connected to them. Performance of the network is an ongoing concern, and many techniques have been developed and used to enhance data flow within networks.
The precise data transmission techniques used depend on both the hardware and systems architecture of the network. The International Organization for Standardization (ISO) has promulgated an Open Systems Interconnection (OSI) communications model for use with data communications between computer systems. This model has been incorporated in many network architectures. The OSI model has 7 different layers, to wit: physical, data link, network, transport, session, presentation, and applications layers. Other structured architectures, such as Systems Network Architecture (SNA), have a similar organization, although the various layers may not be exact equivalents of the OSI model.
Protocols between communicating systems are often implemented at multiple layers of the structured model. For example, the physical layer uses various signalling protocols, and the data link layer ensures that individual data packets are not corrupted during transmission between two directly connected systems. At the same time, the network and transport layers ensure that data packets arrive at the correct systems within a network, and in the correct order. Higher layers also talk to each other using various preselected protocols.
A technique which has been used to control data flow over networks at the session level is session level pacing. This technique has been used in structured architectures such as Systems Network Architecture (SNA). Originally, static pacing was used at the session level. With this technique, a receiving logical unit controls when a sending logical unit may send a window of data packets. This is done by having the receiving logical unit send a message to the sending logical unit that a next window of data packets may now be sent. In static pacing, the window size is fixed when the communications session between the sending and receiving sessions is initialized. Only the timing of window transmission is controllable.
An adaptive pacing technique has also been used which allows the window size to be adjusted dynamically during the communication session. The receiving logical unit controls the size of each window in order to optimize use of its own resources. This technique is described in detail in U.S. Pat. No. 4,736,369, issued to Barzilai, et al, which is incorporated by reference hereinto. As described in such reference, session level pacing generally applies at the link-to-link level, rather than at an end-to-end level.
Although adaptive pacing performs well, and allows more efficient use of communications link and receiving logical unit resources, problems can arise at the sending logical unit. Multiple sessions may be competing for the same physical communications link out of the system at the sending logical unit. These multiple sessions may or may not have different receiving logical units as destinations. When a large window size is granted by one receiving logical unit, a corresponding session in the sending logical unit which transmits a large amount of data can fill up lower level communications buffers in the sending system. This can lead to poor response time on the part of some sessions in the sending logical unit.
Sessions running on the sending system can be classified, for purposes of this discussion, into two categories. The first category, often referred to as interactive sessions, interact with human operators. These sessions typically have a relatively small amount of data which must be transmitted over the network, and user response time is important. The second category, sometimes referred to as batch sessions, typically transmit larger amounts of data over the network. User response times are typically not as important for these sessions. Some sessions actually fall into both categories, and may transmit large amounts of data at some times, and require relatively quick user response times at other times.
When a single communications link out of a system is carrying communications sessions for both interactive and batch sessions, it is common for one or more batch sessions to cause a significant increase in the response time of the system to interactive sessions. This occurs when adaptive session level pacing is used, and a receiving logical unit grants a large transmission window to a batch session. The batch session can then place a very large block of data into the transmission buffer for the lower layers. The data link layer, also referred to as a Data Communications Link (DCL) layer in SNA, has a FIFO buffer which is used for all communications transmitted over a single physical link. If a large amount of data is placed into this buffer, interactive sessions will experience a significant delay before their data can be transmitted. For example, over a 19.2K bps serial communications link, 32K bytes of data will take nearly 15 seconds to transmit. Thus, an interactive session which may need to transmit only one or a few packets can experience a long delay before its data can be transmitted. The amount of delay actually experienced of course depends on a number of system parameters, including window size and communications rates. This phenomenon, wherein a batch session places a large block of data into the communications buffer, has been referred to as "flooding."
It would be desirable to provide a mechanism for controlling processing of a sending logical unit at the session level to minimize the flooding problem described above, thereby improving response time for many categorized as interactive.